package cn.cleanarch.infra.idp.pms.domain.dto;

import cn.cleanarch.infra.idp.commons.domain.dto.BaseDTO;
import org.hibernate.validator.constraints.Length;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 设计文件DTO
 */
@Data
@ToString
@EqualsAndHashCode(callSuper = true)
public class DesignFileDTO extends BaseDTO {

    /**
     * 文件名
     */
    @Length(max = 200)
    private String name;

    /**
     * 文件描述
     */
    @Length(max = 1000)
    private String description;

    /**
     * 文件键名(存储路径)
     */
    @Length(max = 500)
    private String fileKey;

    /**
     * 文件大小(字节)
     */
    private Long fileSize;

    /**
     * 文件类型
     */
    @Length(max = 50)
    private String fileType;

    /**
     * 文件MD5
     */
    @Length(max = 64)
    private String fileMd5;

    /**
     * 文件版本
     */
    @Length(max = 20)
    private String version;

    /**
     * 文件状态
     */
    @Length(max = 20)
    private String status;

    /**
     * 使用状态
     */
    @Length(max = 20)
    private String usedStatus;

    /**
     * 安全状态
     */
    @Length(max = 20)
    private String securityStatus;

    /**
     * 最后访问时间
     */
    private LocalDateTime lastAccessTime;

    /**
     * 所有者ID
     */
    private Long ownerId;

    /**
     * 项目ID（与项目绑定）
     */
    private Long projectId;

    /**
     * 删除时间
     */
    private LocalDateTime deletedAt;

    /**
     * 存储状态
     */
    @Length(max = 20)
    private String storageStatus;

    /**
     * 标签ID列表
     */
    private List<Long> tags;

    /**
     * 创建者ID
     */
    private Long createdBy;

    /**
     * 更新者ID
     */
    private Long updatedBy;

    /**
     * 当前版本ID（指向t_design_file_version表的主键）
     */
    private Long currentVersionId;

}
